home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Univers Mac Interactif 53
/
Univers Mac Interactif - Issue 53.iso
/
UNIVERS MAC 53
/
Hypercard
/
Sans-Faute⁄Grammaire®
/
Sans-Faute⁄Grammaire ƒ
/
Pour les autres applications
/
4D
/
External SFG pour 4D
/
Sources
/
Ext4D.p
next >
Wrap
Text File
|
1995-08-28
|
27KB
|
811 lines
unit Ext4D;
{--------------------------------------------------------------------------------}
{ Ext4D.p P header file}
{}
{ Copyright ACI SA 1985-95}
{ --------------------------------------------------------------------------------}
{}
{}
{ --------------------------------------------------------------------------------}
{ Modifications History}
{ --------------------------------------------------------------------------------}
{ Date Version}
{ --------------------------------------------------------------------------------}
{ 06/27/95 2.0 Alpha 1 release}
{}
{ --------------------------------------------------------------------------------}
interface
{$IFC UNDEFINED __EXTERNAL4D__}
{$SETC __EXTERNAL4D__ := 1}
{_______________________________________________________________}
const
{--------------------------------------------------------------------------------}
{Selectors for 4th Dimension entry points routine}
{--------------------------------------------------------------------------------}
{version 2.0.0 or later}
kEX_CREATE_RECORD = 1;
kEX_SAVE_RECORD = 2;
kEX_NEXT_RECORD = 3;
kEX_PREVIOUS_RECORD = 4;
kEX_GOTO_SELECTED_RECORD = 5;
kEX_RECORDS_IN_SELECTION = 6;
kEX_DELETE_SELECTION = 7;
kEX_FIRST_RECORD = 8;
kEX_COUNT_FILES = 9;
kEX_COUNT_FIELDS = 10;
kEX_FILENAME = 11;
kEX_FIELD_ATTRIBUTES = 12;
kEX_SORT_SELECTION = 13;
kEX_SEARCH = 14;
kEX_BEFORE_SELECTION = 15;
kEX_END_SELECTION = 16;
kEX_GET_FIELD = 17;
kEX_PUT_FIELD = 18;
kEX_GET_VARIABLE = 19; {Not on 4D server}
kEX_PUT_VARIABLE = 20; {Not on 4D server}
kEX_INSTALL_TASK = 21;
kEX_REMOVE_TASK = 22;
kEX_GET_RESID = 23;
kEX_GET_EXPORT_FILTER = 24;
kEX_GET_IMPORT_FILTER = 25;
kEX_GET_PACKED_RECORD = 26;
kEX_PUT_PACKED_RECORD = 27;
kEX_CREATE_SET = 28;
kEX_USE_SET = 29;
kEX_EXECUTE_PROCEDURE = 30; {Not on 4D server}
kEX_EXECUTE_FUNCTION = 31; {Not on 4D server}
{EP #32 to #38 are not available}
kEX_EVENT_IS_TAKEN = 39;
kEX_LOCKED = 40;
kEX_READ_WRITE = 41;
kEX_LOAD_RECORD = 42;
kEX_RELATE_ONE = 43;
kEX_RELATE_MANY = 44;
kEX_IS_MULTIUSER = 45;
{EP #46 is not available}
kEX_STRING = 47;
kEX_POPUP_FIELD_LIST = 48; {Not on 4D server}
kEX_POPUP_FILE_LIST = 49; {Not on 4D server}
kEX_GET_FILEFIELD_NUM = 50;
kEX_SELECTED_RECORD_NUMBER = 51;
{EP #52 to #55 are not available}
kEX_GET_INFORMATION = 56;
kEX_MESSAGES = 57;
{EP #58 to #64 are not available}
{version 2.1.0 or later}
kEX_UPDATE_VARIABLES = 65; {Not on 4D server}
kEX_CHANGE_TITLE = 66;
kEX_CLOSE_EXT_WINDOW = 68;
kEX_GET_4D_GROW_ZONE = 69;
{EP #70 to #72 are not available}
kEX_GET_RECORD_NUMBER = 73;
kEX_ADD_TO_SET = 74;
kEX_CREATE_EMPTY_SET = 75;
kEX_DELETE_SET = 76;
{EP #77 to #79 are not available}
{version 2.1.1 or later}
kEX_GET_CURRENT_PAGE = 80; {Not on 4D server}
{version 3.0.0 or later}
{EP #81 is not available}
kEX_TOKENIZE = 82; {Not on 4D server}
kEX_EXEC_TOKEN_PROC = 83; {Not on 4D server}
kEX_EXEC_TOKEN_FUNC = 84; {Not on 4D server}
kEX_NEW_PROCESS = 85;
kEX_KILL_PROCESS = 86;
kEX_FREEZE_PROCESS = 87;
kEX_UNFREEZE = 88;
kEX_PUT_PROCESS_TO_SLEEP = 89;
kEX_GET_WINDOW_PROCESS = 90;
kEX_CURRENT_ID = 91;
kEX_SET_WINDOW_PROCESS = 92;
kEX_YIELD = 93;
kEX_GET_PROCESS_INFO = 94;
kEX_NB_PROCESS = 95;
kEX_GOTO_RECORD = 96;
{EP #97 to #99 are not available}
kEX_READ_DOCUMENT = 100; {Not on 4D server}
kEX_SAVE_DOCUMENT = 101; {Not on 4D server}
kEX_READ_DATA = 102; {4D Client only}
kEX_WRITE_DATA = 103; {4D Client only}
kEX_OPEN_PRINTER = 104;
kEX_RELEASE_PRINTER = 105;
kEX_PERFORM_LOG_ACTION = 106; {Not on 4D Client}
{EP #107 to #111 are not available}
kEX_GET_USER_LIST = 112;
{EP #113 to #114 are not available}
kEX_GET_PREF_FILE = 115;
kEX_DETOKENIZE = 116; {Not on 4D server}
kEX_FIND_PROCID = 117; {Not on 4D server}
kEX_PROCID = 118; {Not on 4D server}
{EP #119 is not available}
kEX_TEST_PRINTER = 120;
kEX_THERMOMETER = 121;
kEX_YIELD_ABSOLUTE = 122;
{EP #123 to #124 are not available}
kEX_GET_GLOBALVAR = 125; {Not on 4D server}
kEX_SET_GLOBALVAR = 126; {Not on 4D server}
kEX_EXIST_FILE = 127; {Not on 4D server}
{EP #128 to #129 are not available}
{version 3.0.2 or later}
kEX_GET_PRINT_INFO = 130;
kEX_GET_FIELD_ATTRIBUTES = 131;
kEX_GET_PROCEDITOR_TE = 132;
kEX_CALC_PROCEDITOR_LINE = 133;
kEX_FLOATING_WINDOW = 134;
kEX_UPDATE_PROCESS_VARIABLE = 135;
kEX_QUIT4D = 136;
{version 3.0.5 or later}
kEX_LOG_INFO = 137; {Not on 4D server}
{EP #138 to #141 are not available}
kEX_OPEN_LOG = 142; {Not on 4D server}
{version 3.1.0 or later}
{EP #143 to #144 are not available}
kEX_GET_GROUP_LIST = 145;
kEX_UPDATE_INTERNAL_CACHE = 146;
{version 3.1.1 or later}
kEX_RESTORE_MACOS_ENV = 147;
kEX_RESTORE_MAC4D_ENV = 148;
kEX_IS_BACKUP_ACTIVE = 149;
{version 3.2.0 or later}
kEX_GET_LOGFIELD_TYPE = 150;
kEX_GET_LOGFIELD = 151;
kEX_NEWLOG = 152; {Not on 4D server}
kEX_GESTALT = 153;
kEX_DOUBLE_2_EXTENDED = 154; {PowerPC-based Mac or Windows version only}
kEX_EXTENDED_2_DOUBLE = 155; {PowerPC-based Mac or Windows version only}
kEX_ARRAY_DOUBLE_2_EXTENDED = 156; {PowerPC-based Mac or Windows version only}
kEX_ARRAY_EXTENDED_2_DOUBLE = 157; {PowerPC-based Mac or Windows version only}
kEX_NEW_PROCESS_PPC = 158; {PowerPC-based Mac or Windows version only}
{version 3.5.0 or later}
kEX_GET_4DWIN_MACOS_GLOBALS = 159; {Windows version only}
{--------------------------------------------------------------------------------}
{4th Dimension errors codes}
{--------------------------------------------------------------------------------}
{4D database engine errors codes}
kBadIndexPage = -10004; {Index page is out of range}
kBadRecNumber = -10003;
{Record is out of range }
kBadRecStruct = -10002;
{Invalid record structure }
{( data file needs to be repaired )}
kBadIndexStruct = -10001;
{Invalid index page }
{( index needs to be repaired or rebuilt )}
{ if 4D Client , maybe due to error }
{of connection reported by network component}
kBadDataAddr = -10000; {Bad record address}
kNoEnoughRoom = -9999; {No more space available to save the record}
kDuplicatedKey = -9998; {Duplicated index key}
kMaxNbOfRecReached = -9997; {Maximum number of records has been reached}
kStackFullErr = -9996; {Stack is full}
kDemoVersion = -9995; {Limits of demo version have been reached}
kComInterrupted = -9994; {Serial communication interrupted by user}
kAccessDenied = -9991; {Access privileges error}
kTimeOutErr = -9990; {Time-out error}
kBadStructure = -9989; {Invalid structure}
{( database needs to be repaired )}
kRelatedRecords = -9987; {Other records are related to this record}
kRecordLockedDuringDel = -9986; {Record(s) locked during an automatic deletion action}
kRecursiveIntegrity = -9985; {Recursive integrity}
kDuplicatedKeyInTrans = -9984; {Transaction cancelled because of a dup. index key }
kRecordNotInSelection = -9982; {Record not in selection and could not be loaded}
kBadFileFieldTable = -9981; {Invalid Field/File definition table sent}
kStructureIsLocked = -9980; {File cannot be created because structure is locked}
kBadUserName = -9979; {Unknown User}
kBadPassword = -9978; {Invalid Password}
kBadSelection = -9977; {The selection does not exist}
kBackupInProgress = -9976; {Backup in progress, no modifications are allowed}
kCannotLoadTrIdxPage = -9975; {Transaction index page could not be loaded}
kRecordAlreadyDeleted = -9974; {The record has already been deleted}
kBadTRIC = -9973; {TRIC resources are not the same}
kBadFileNumber = -9972; {File number is out of range}
kBadFieldNumber = -9971; {Field number is out of range}
kFieldNotIndexed = -9970; {Field is not indexed}
kBadFieldType = -9969; {Invalid field type requested}
kBadSelectedRecordNumber = -9968; {Invalid selected record number requested}
kRecordNotLoaded = -9967; {The record was not modified because}
{it could not be loaded}
kIncompatibleTypes = -9966; {Invalid type requested}
kBadSearchDefinition = -9965; {Bad search definition table sent}
kBadSortDefinition = -9964; {Bad sort definition table sent}
kBadRecordNumber = -9963; {Invalid record number requested}
kBackupCannotLaunched = -9962; {The backup cannot be launched because}
{the server is shutting down}
kBackupNotRunning = -9961; {The backup process is currently not running}
kBackupNotInstalled = -9960; {4D Backup is not installed on the server}
kBackupAlreadyRunning = -9959; {the backup process has already been started}
{by another user or process}
kProcessNotStarted = -9958; {Process could not be started}
kListIsLocked = -9957; {The list is locked}
kQTNotInstalled = -9955; {QuickTime is not installed}
kSNoCurrentRecord = -9954; {There is no current record}
kNoLogFile = -9953; {There is no Log file}
kBadDataSegmentHeader = -9952; {Invalid data segment}
kNotRelatedField = -9951; {Field is not related to another one}
kBadDataSegmentNumber = -9950; {Invalid data segment number}
kNamedSelNotExist = -9946; {Unable to clear the named selection because}
{it does not exist}
kCDROMvers = -9945; {CD-ROM 4D Runtime error,}
{writing operations are not allowed}
kPassportvers = -9943; {4D Passport version error}
kLicensingError = -9942; {4D Client Licensing scheme is incompatible}
{with this version of 4D Server}
kUnknownGestaltSelector = -9941; {Unknown EX_GESTALT selector}
kExtInitFailed = -9940; {4D Extension initialization failed}
kExtNotFound = -9939; {External routine not found}
{Additional entry points errors codes}
kCallNotImplemented = -1; {Entry point is not implemented}
kInvalidFileNumber = 4001; {Invalid file number}
kInvalidRecordNumber = 4002; {Invalid record number}
kInvalidFieldNumber = 4003; {Ivvalid field number}
kMNoCurrentRecord = 4004; {There is no current record}
{--------------------------------------------------------------------------------}
{4D Extensions, External packages opcodes}
{--------------------------------------------------------------------------------}
kServerDeinitPackage = -220;
kServerCleanUp = -207;
kWriteOnServer = -206;
kReadOnServer = -205;
kClientDisconnect = -202;
kClientConnect = -201;
kServerInitPackage = -200;
kPackageGiveMemory = -10;
kClientDeinitPackage = -2;
kDeinitPackage = kClientDeinitPackage;
kClientInitPackage = -1;
kInitPackage = kClientInitPackage;
kDontPurgePackage = 1022;
{--------------------------------------------------------------------------------}
{4D Extensions, External areas events}
{--------------------------------------------------------------------------------}
{[4D->X] in What of EventRecord}
kIdleEvt = 0;
kInitEvt = 16;
kDeInitEvt = 17;
kCursorEvt = 18;
kHookEvt = 18;
kTestEvt = 20;
kSelectEvt = 21;
kDeSelectEvt = 22;
kResizeEvt = 24;
kScrollEvt = 25;
kStructEvt = 26;
kTestPrintSizeEvt = 27;
kPrintSizeEvt = 28;
kPrintBandEvt = 29;
kUndoEvt = 30;
kCutEvt = 31;
kCopyEvt = 32;
kPasteEvt = 33;
kClearEvt = 34;
kSelectAllEvt = 35;
kInstallMenusEvt = 40;
kDeInstallMenusEvt = 41;
kMenuSelectedEvt = 42;
kActivateMenusEvt = 43;
kGrowBoxEvt = 50;
{EventRecord fields}
kZoneIsCustomized = 102; {[X->4D] during StructEvt in Message}
kIsPrinting = -1; {[4D->X] during InitEvt in Message}
kIsExternalWindow = -1; {[4D->X] during InitEvt in When}
kIsOutPutLayout = 0; {[4D->X] during InitEvt in Modifiers}
kIsInputLayout = 1; {[4D->X] during InitEvt in Modifiers}
kNeedMinSize = 121; {[X->4D] during GrowBoxEvt in Modifiers}
{Width, Height in Message}
kCanRefuse = 0; {[4D->X] during DeInitEvt in Message}
kCannotRefuse = 130; {[X->4D] during DeInitEvt in Message}
kZoneRefuseDeInit = 122; {[X->4D] during DeInitEvt in Message}
kZoneCanBeSelected = 101; {[X->4D] during TestEvt in Message}
kUseOffScreen = 256; {[X->4D] during TestEvt in Message}
kZoneRefuse = 103; {[X->4D] during DeSelectEvt in Message}
kIsNewData = 2; {[4D->X] during UpdateEvt in When}
kZoneVariableFrame = 104; {[X->4D] during TestPrintSizeEvt in Message}
kGoToNextField = 110; {[X->4D] during user events in Message}
kGoToPreviousField = 111; {[X->4D] during user events in Message}
kEventNotTaken = 112; {[X->4D] during user events in Message}
kCallTheScript = 301; {[X->4D] during user events in Message}
{Edit menu items numbers}
kCutItem = 3;
kCopyItem = 4;
kPasteItem = 5;
kClearItem = 6;
kSelectAllItem = 7;
{--------------------------------------------------------------------------------}
{4D Extensions, External process events}
{--------------------------------------------------------------------------------}
kTerminateProcess = 33; {[4D->Process] in What of EventRecord}
{Process must terminate a.s.a.p.}
{--------------------------------------------------------------------------------}
{4th Dimension, kEX_GET_INFORMATION, PackInitBlock.fVersion}
{--------------------------------------------------------------------------------}
{Masks fParam1 returned by kEX_GET_INFORMATION}
kUserModeMask = $40000000;
kAppTypeMask = $20000000;
kMessagesStatusMask = $10000000;
kCompiledStatusMask = $8000000;
kIsWorkStationMask = $4000000;
kIsServerMask = $2000000;
{For testing fH returned by kEX_GET_INFORMATION}
kIsSpecialMask = $20;
kIsDemoMask = $10;
{--------------------------------------------------------------------------------}
{4th Dimension, kEX_FIELD_ATTRIBUTES, kEX_GET_FIELD_ATTRIBUTES}
{--------------------------------------------------------------------------------}
kIndexMask = $8000;
kUniqueMask = $4000;
kMandatoryMask = $2000;
kChoiceListMask = $1000;
kModifiableMask = $800;
kEnterableMask = $400;
kInvisibleMask = $100;
kOneToManyMask = $40;
kManyToOneMask = $20;
kIntegrityMask = $4;
kNoDeleteMask = $2;
kUpdateLinkMask = $1;
type
{--------------------------------------------------------------------------------}
{4th Dimension field types}
{--------------------------------------------------------------------------------}
FieldKind = (eAlphaField, {0, Alphanumeric field (from 2 to 80 characters)}
eRealField, {1, Numeric field (Double or Extended value)}
eTextField, {2, Text field (up to 32000 characters)}
ePictureField, {3, Picture field (virtually any block of data)}
eDateField, {4, Date field}
eDummy1, eBooleanField, {6, Boolean field}
eSubfileField, {7, Subfile field}
eIntegerField, {8, Integer field (-32768..32767)}
eLongintField, {9, Long Integer field (-2^31..(2^31)-1)}
eDummy2, eTimeField {11, Time field}
);
{--------------------------------------------------------------------------------}
{4th Dimension expression and variable types}
{--------------------------------------------------------------------------------}
ValueKind = (eUnused1, eReal, {1, Variable declared using C_REAL}
eText, {2, Variable declared using C_TEXT}
ePicture, {3, Variable declared using C_PICTURE}
eDate, {4, Variable declared using C_DATE}
eUndefined, {5, Undefined variable}
eBoolean, {6, Variable declared using C_BOOLEAN}
eUnused2, eInteger, {8, Variable declared using C_INTEGER}
eLongint, {9, Variable declared using C_LONGINT}
eUnused3, eTime, {11, Variable declared using C_TIME}
eUnused4, eArrayTable, {13, Any two-dimensional array}
eArrayReal, {14, One dimension array declared using ARRAY REAL}
eArrayInteger, {15, One dimension array declared using ARRAY INTEGER}
eArrayLongint, {16, One dimension array declared using ARRAY LONGINT}
eArrayDate, {17, One dimension array declared using ARRAY DATE}
eArrayText, {18, One dimension array declared using ARRAY TEXT}
eArrayPicture, {19, One dimension array declared using ARRAY PICTURE}
eUnused5, eArrayString, {21, One dimension array declared using ARRAY STRING}
eUnused6, eUnused7, eString {24, Variable declared using C_STRING}
);
{--------------------------------------------------------------------------------}
{4th Dimension search and sort operators}
{--------------------------------------------------------------------------------}
{Values for the field fOperator of LineBlock data structure}
{These values define the logical connection between the lines of a search definition}
Operator = (eNoOperator, {Always 1st line of a search definition}
eLogicalAND, {AND (& operator)}
eLogicalOR, {OR (| operator)}
eExcept {EXCEPT (# operator)}
);
{Values for the field fOperation of LineBlock data structure}
{These values define the comparison operator for the line of search definition}
Operation = (eNoOperation, {No search line can have this value}
eIsEqual, {Is equal to}
eIsDifferent, {Is not equal to}
eIsGreater, {Is greater than}
eIsGreaterOrEqual, {Is greater or equal to}
eIsLess, {Is less than}
eIsLessOrEqual, {Is less or equal to}
eContains, {Contains}
eNotContains {Does not contains}
);
{--------------------------------------------------------------------------------}
{4th Dimension ASCII drivers opcodes}
{--------------------------------------------------------------------------------}
DriverEvent = (eNoEvent, eDrInit, eDrDeinit, eDrGotoX, eDrGotoY, eDrGetReso, eDrGetDim, eDrNewLine, eDrFormFeed, eDrCharInfo, eDrSendText, eDrOpenDoc, eDrCloseDoc, eDrParams, eDrSendB, eDrSendU, eDrSendUB, eDrSendParams, eDrReceiveParams);
{--------------------------------------------------------------------------------}
{4th Dimension expressions and variables data structures}
{--------------------------------------------------------------------------------}
{Basic data types}
XPOINTER = ^SignedByte; {Generic pointer}
XHANDLE = ^XPOINTER; {Generic handle}
SBYTE = SignedByte; {Any one byte data type}
UBYTE = Byte; {One-byte enum fields}
SWORD = Integer; {-32768..+32767}
UWORD = Integer; {Any 16-bit data type}
SLONG = Longint; {-2^31..+2^31-1}
ULONG = Longint; {Any 32-bit data type}
REAL = Extended; {Numeric value on 68K-based Macintosh}
{4th Dimension Date expression}
DateBlock = record
fDay: SWORD; {0..31}
fMonth: SWORD; {1..12}
fYear: SWORD; {1..32767}
end;
DatePtr = ^DateBlock;
DateHdl = ^DatePtr;
{4th Dimension text expression}
TextBlock = record
fSize: SWORD; {Size in bytes}
fData: XHANDLE; {Handle to text or NULL}
end;
TextPtr = ^TextBlock;
TextHdl = ^TextPtr;
{4th Dimension Picture expression}
PictBlock = record
fSize: SLONG; {Size in bytes}
fData: XHANDLE; {Handle to picture definition}
end;
PictPtr = ^PictBlock;
PictHdl = ^PictPtr;
{4th Dimension picture expression trailer}
PictEndBlock = record
fOrigin: SLONG; {QuickDraw point}
fTransfer: SWORD; {Transfer mode}
end;
PictEndPtr = ^PictEndBlock;
PictEndHdl = ^PictEndPtr;
{4th Dimension fixed length string variable}
SStringBlock = record
fSize: SWORD; {Fixed length}
fData: string[255]; {Pascal string (length byte followed by characters)}
end;
SStringPtr = ^SStringBlock;
SStringHdl = ^SStringPtr;
{4th Dimension Arrays}
ArrayBlock = record
fSize: SLONG; {Number of elements}
fData: XHANDLE; {Handle to array contents (see below)}
fCurrent: SWORD; {Selected element number}
end;
ArrayPtr = ^ArrayBlock;
ArrayHdl = ^ArrayPtr;
{4th Dimension array contents (fData handle of ArrayBlock)}
ArrayBoolean = packed array[0..0] of SBYTE; {ARRAY BOOLEAN}
ArrayBoolPtr = ^ArrayBoolean;
ArrayBoolHdl = ^ArrayBoolPtr;
ArrayInteger = array[0..0] of SWORD; {ARRAY INTEGER}
ArrayIntPtr = ^ArrayInteger;
ArrayIntHdl = ^ArrayIntPtr;
ArrayLongint = array[0..0] of SLONG; {ARRAY LONGINT}
ArrayLongPtr = ^ArrayLongint;
ArrayLongHdl = ^ArrayLongPtr;
ArrayPict = array[0..0] of XHANDLE; {ARRAY PICTURE}
ArrayPictPtr = ^ArrayPict;
ArrayPictHdl = ^ArrayPictPtr;
ArrayReal = array[0..0] of REAL; {ARRAY REAL}
ArrayRealPtr = ^ArrayReal;
ArrayRealHdl = ^ArrayRealPtr;
ArrayDate = array[0..0] of DateBlock; {ARRAY DATE}
ArrayDatePtr = ^ArrayDate;
ArrayDateHdl = ^ArrayDatePtr;
ArrayText = array[0..0] of TextBlock; {ARRAY TEXT}
ArrayTextPtr = ^ArrayText;
ArrayTextHdl = ^ArrayTextPtr;
MStringBlock = record {ARRAY STRING}
fSize: SWORD; {Fixed length}
fData: string[1]; {Array of fSize Pascal strings}
end;
MStringPtr = ^MStringBlock;
MStringHdl = ^MStringPtr;
SmallValueBlock = record {2D arrays}
fType: SBYTE; {Type}
fFiller: SBYTE;
fArray: ArrayBlock; {Array of fSize Pascal strings}
end;
SmallValuePtr = ^SmallValueBlock;
SmallValueHdl = ^SmallValuePtr;
{4th Dimension expression or variable}
ValueBlock = record
fType: SBYTE; {Type}
fFiller: SBYTE;
case SBYTE of
1: (
fReal: REAL
); {C_REAL variable}
2: (
fDate: DateBlock
); {C_DATE variable}
3: (
fBoolean: SBYTE
); {C_BOOLEAN variable}
4: (
fText: TextBlock
); {C_TEXT variable}
5: (
fPicture: PictBlock
); {C_PICTURE variable}
6: (
fLongint: SLONG
); {C_LONGINT variable}
7: (
fTime: SLONG
); {C_TIME variable}
8: (
fString: SStringBlock
); {C_STRING variable}
9: (
fArray: ArrayBlock
); {Any array}
end;
ValuePtr = ^ValueBlock;
ValueHdl = ^ValuePtr;
{--------------------------------------------------------------------------------}
{4th Dimension parameter block for entry point routine}
{--------------------------------------------------------------------------------}
{4th Dimension Search or Sort definition}
LineBlock = record
fOperator: SBYTE; {Logical operator for search lines only}
fField: SWORD; {Field number to search or sort}
fFile: SWORD; {File number to search or sort}
fOperation: SBYTE; {Comparison operator or sorting order}
case SBYTE of {Values for search lines only}
1: (
fString: string[40]
); {Alphanumeric or Text fields}
2: (
fReal: REAL
); {Real field (Extended on 68K, Double on other)}
3: (
fDate: DateBlock
); {Date field}
4: (
fLongint: SLONG
); {Long Integer field}
5: (
fInteger: SWORD
); {Integer field}
6: (
fBoolean: SBYTE
); {Boolean field}
end;
LinePtr = ^LineBlock;
LineHdl = ^LinePtr;
{Parameter block to pass to the 4th Dimension entry points routine}
ParameterBlock = record
fFileNumber: SWORD; {File number}
fFieldNumber: SWORD; {Field number}
fRecordNumber: SLONG; {Physical or Selected record number}
fManyToOne: SBYTE; {Activation of many-to-one relations}
fOneToMany: SBYTE; {Activation of one-to-many relations}
fName: string[255]; {File names, field names, ...}
fH: XHANDLE; {Usually carries pointer or handle parameters}
fError: SWORD; {Error result}
fParam1: SLONG; {Multi-purpose}
fParam2: SLONG; {Multi-purpose}
fParam3: SLONG; {Multi-purpose}
fParam4: SLONG; {Multi-purpose}
fR: REAL; {Usually carries Extended values}
fD: DateBlock; {Usually carries 4D Date Values}
fL: SLONG; {Usually carries 4D Long Integer or Time values}
fI: SWORD; {Usually carries 4D Integer or Boolean values}
fS: string[80]; {Usually carries 4D Alphanumeric values}
fT: TextBlock; {Usually carries 4D Text values}
fClearOldVariable: SBYTE; {Tells 4D to dispose of old variable contents}
fNumberOfLines: SWORD; {Number of lines in search or sort definition}
fLines: array[0..0] of LineBlock; {Search or Sort definition}
end;
ParameterPtr = ^ParameterBlock;
ParameterHdl = ^ParameterPtr;
{--------------------------------------------------------------------------------}
{4D Extensions, external packages related data structures}
{--------------------------------------------------------------------------------}
{Parameters passed by 4th Dimension (up to 25)}
PackageBlock = array[1..25] of XPOINTER;
PackagePtr = ^PackageBlock;
PackageHdl = ^PackagePtr;
{Function result (pointer is result size > 4 bytes)}
ResultValue = XPOINTER;
ResultPtr = ^ResultValue;
ResultHdl = ^ResultPtr;
{External package initialization information block}
{During the initialization phase, a pointer to a PackInitBlock data structure}
{is passed to the entry point routine of your 4D extension as second argument}
{(pointer to array of parameters during the other calls.)}
PackInitBlock = record
fVersion: SLONG; {4th Dimension version number}
fLength: SLONG; {Actual length of data structure in bytes}
fCPUType: SLONG; {Platform identifier}
fCall4D: XPOINTER;{4D entry points routine address}
end;
PackInitPtr = ^PackInitBlock;
PackInitHdl = ^PackInitPtr;
{Resource bundle for 4DEX, 4DPX or 4DPY resource based external packages}
ResEntryBlock = record
fType: ULONG; {Resource type}
fLocalID: SWORD; {Source code resource ID}
fGlobalID: SWORD; {Actual resource ID}
end;
ResEntryPtr = ^ResEntryBlock;
ResEntryHdl = ^ResEntryPtr;
ResTabBlock = record
fNumber: SWORD; {Number of entries}
fEntries: array[0..0] of ResEntryBlock; {Entries}
end;
ResTabPtr = ^ResTabBlock;
ResTabHdl = ^ResTabPtr;
{--------------------------------------------------------------------------------}
{4D Server and 4D Client, Read/Write data structure}
{--------------------------------------------------------------------------------}
ReadWriteBlock = record
fDataType: ULONG;
fDataID: SWORD;
fDataSize: SLONG;
fPackID: SLONG;
fProcessID: SLONG;
end;
ReadWritePtr = ^ReadWriteBlock;
ReadWriteHdl = ^ReadWritePtr;
{--------------------------------------------------------------------------------}
{4th Dimension, ASCII Driver data structure}
{--------------------------------------------------------------------------------}
AsciiDriverBlock = record
fOpcode: SWORD;
fParam1: SWORD;
fParam2: SWORD;
fLinePointer: XPOINTER;
fError: SWORD;
end;
{--------------------------------------------------------------------------------}
{4th Dimension Entry point routine}
{--------------------------------------------------------------------------------}
procedure Call4D (selector: SWORD; var params: ParameterBlock);
inline
$206D, $FFF4, $4E90;
{_______________________________________________________________}
implementation
end.